#====================================================================
#
# Makefile	GPU Program builds
#
#====================================================================
#
#====================================================================
#	Paths
#====================================================================

HOME     = ..
SRC      = $(HOME)\src
COMMON   = $(HOME)\common
INC      = $(HOME)\inc
DBPATH   = $(HOME)\debug
DATA     = $(HOME)\data
#====================================================================
#	Macro & Assembler flags
#====================================================================

MACFLAGS   = -i$(INC)
GFLAGS     = -I$(INC) -o
STADDR     = c000
DADDR      = DF00
ALNFLAGS   = -l -a $(STADDR) $(DADDR) x
MAPFLAGS   = -v -m -l -a $(STADDR) $(DADDR) x

#====================================================================
#	Default Rules
#====================================================================

.SUFFIXES:	.o .s .gas .jag .3ds

.s.o:
	mac $(MACFLAGS) $*

.gas.dat:
	gasm $(GFLAGS) $*
	ltxconv -a $*
	bin2dat $*

.jag.o:
	mac $(MACFLAGS) $*.jag

.3ds.jag:
	3ds2jag -o $* $*.3ds

#====================================================================
#	Object code modules
#====================================================================
#
OBJ0   = main.o
OBJ1   = init.o vidinit.o gpu.o rotate.o joystick.o
OBJ2   = ram68k.o
OBJ3   = gpucode.o

OBJS   = $(OBJ0) $(OBJ1) $(OBJ2) $(OBJ3)

MOD0   = $(DATA)\cube.o $(DATA)\cone.o
MOD1   = $(DATA)\cylinder.o

MODELS = $(MOD0) $(MOD1)

SRC0   = main.s
SRC1   = init.s vidinit.s gpu.s rotate.s joystick.s
SRC2   = ram68k.s
SRC3   = gpucode.s

SRCS   = $(SRC0) $(SRC1) $(SRC2) $(SRC3)

GPU0   = matrix3.gas xform.gas

GPUS   = $(GPU0)

INC0   = macros.inc
INC1   = $(INC)\jaguar.inc $(INC)\gpu.inc $(INC)\blit.inc
INC2   = $(INC)\joydefs.inc $(INC)\defs.inc

JAG0   = $(DATA)\cube.jag $(DATA)\cone.jag
JAG1   = $(DATA)\cylinder.jag

JAGS   = $(JAG0) $(JAG1)

LINC   = $(INC0)
GINC   = $(INC1) $(INC2)

BAKS   = $(SRCS) $(GPUS) $(LINC) $(GLINC)

#
#====================================================================
#	TARGETS
#====================================================================
#

demo:		demo.abs

map:		demo.map

backup:		$(BAKS)
	@echo Starting FULL Backup
	@echo 	copying makefile to a:\polygon
	@copy makefile a:\polygon
	@echo 	copying $(SRCS) to a:\polygon
	@copy $(SRCS) a:\polygon
	@echo 	copying $(GPUS) to a:\polygon
	@copy $(GPUS) a:\polygon
	@echo 	copying $(LINC) to a:\polygon
	@copy $(LINC) a:\polygon
	@echo 	copying $(GINC) to a:\inc
	@copy $(GINC) a:\inc
	@echo 	copying $(JAGS) to a:\polygon
	@copy $(JAGS) a:\inc
	@echo 	copying $(DBPATH) to a:\debug
	@copy $(DBPATH)\*.* a:\debug
	@echo FULL Backup Complete

source:		$(BAKS)
	@echo Starting SOURCE Backup
	@echo 	copying makefile to a:\polygon
	@copy makefile a:\polygon
	@echo 	copying $(SRCS) to a:\polygon
	@copy $(SRCS) a:\polygon
	@echo 	copying $(GPUS) to a:\polygon
	@copy $(GPUS) a:\polygon
	@echo 	copying $(LINC) to a:\polygon
	@copy $(LINC) a:\polygon
	@echo 	copying $(GINC) to a:\inc
	@copy $(GINC) a:\inc
	@echo 	copying $(JAGS) to a:\polygon
	@copy $(JAGS) a:\inc
	@echo SOURCE Backup Complete

#
#====================================================================
#	EXECUTABLES
#====================================================================
#

demo.abs:	makefile  $(MODELS) $(OBJS)
	aln $(ALNFLAGS) -o demo $(MODELS) $(OBJS)
	filefix demo

demo.map:	$(OBJS)
	aln $(MAPFLAGS) -o demo $(MODELS) $(OBJS) > demo.map
	filefix demo

#
#====================================================================
#	68000	Dependencies
#====================================================================
#

main:		main.o

main.o: 	main.s $(INC)\jaguar.inc $(INC)\blit.inc $(INC)\defs.inc $(INC)\joydefs.inc

init:		init.o

init.o: 	init.s $(INC)\jaguar.inc $(INC)\blit.inc $(INC)\defs.inc

vidinit:	vidinit.o

vidinit.o: 	vidinit.s $(INC)\jaguar.inc $(INC)\defs.inc

joystick:	joystick.o

joystick.o: 	joystick.s $(INC)\jaguar.inc $(INC)\joydefs.inc $(INC)\defs.inc

gpu:		gpu.o

gpu.o: 		gpu.s $(INC)\jaguar.inc

rotate:		rotate.o

rotate.o: 	rotate.s $(INC)\jaguar.inc $(INC)\blit.inc $(INC)\gpu.inc $(INC)\joydefs.inc $(INC)\defs.inc

ram68k:		ram68k.o

ram68k.o: 	ram68k.s $(INC)\jaguar.inc $(INC)\blit.inc

#
#====================================================================
#	68000/GPU Dependencies
#====================================================================
#

gpucode.o:	gpucode.s matrix3.dat xform.dat

#
#====================================================================
#	GPU Dependencies
#====================================================================
#

matrix3.dat:	matrix3.gas macros.inc $(INC)\jaguar.inc $(INC)\blit.inc $(INC)\gpu.inc

xform.dat:	xform.gas macros.inc $(INC)\jaguar.inc $(INC)\blit.inc $(INC)\gpu.inc

#
#====================================================================
#	JAG Dependencies
#====================================================================
#

cube:			$(DATA)\cube.o

$(DATA)\cube.o:		$(DATA)\cube.jag
	mac $(MACFLAGS) $*.jag

$(DATA)\cube.jag:	$(DATA)\cube.3ds
	3ds2jag -o $* $*.3ds

cone:			$(DATA)\cone.o

$(DATA)\cone.o:		$(DATA)\cone.jag
	mac $(MACFLAGS) $*.jag

$(DATA)\cone.jag:	$(DATA)\cone.3ds
	3ds2jag -o $* $*.3ds

cylinder:		$(DATA)\cylinder.o

$(DATA)\cylinder.o:	$(DATA)\cylinder.jag
	mac $(MACFLAGS) $*.jag

$(DATA)\cylinder.jag:	$(DATA)\cylinder.3ds
	3ds2jag -o $* $*.3ds

#====================================================================
#		EOF
#====================================================================

